package com.eu.ebpm.engine.query;

import com.eu.ebpm.engine.service.Task;

/**
 * 
 * 运行任务查询接口
 * @author wxh
 *
 */
public interface TaskQuery extends Query<TaskQuery, Task> {
	
	public static final String TASK_ID = "id";
	
	public static final String TASK_ASSIGNEE = "assignee";
	
	public static final String TASK_ROLER = "roler";
	
	public static final String TASK_ORG = "org";
	
	public static final String TASK_USER = "user";
	
	public static final String COLUMN_ID = "ID_";
	
	public static final String COLUMN_NAME = "NAME_";
	
	public static final String COLUMN_CREATETIME = "CREATETIME_";
	
	public static final String COLUMN_ASSIGNEETIME = "ASSIGNEETIME_";
	
	/**
	 * 根据taskId查询
	 * @param taskId ID号
	 * @return 查询实例
	 */
	public TaskQuery queryById(long taskId);

	/**
	 * 根据assignee查询
	 * @param assignee 任务获取者
	 * @return 查询实例
	 */
	public TaskQuery queryByAssignee(String assignee);
	
	/**
	 * 根据角色查询
	 * @param roler 角色
	 * @return 查询实例
	 */
	public TaskQuery queryByRoler(String roler);
	
	/**
	 * 根据用户查询
	 * @param user 用户
	 * @return 查询实例
	 */
	public TaskQuery queryByUser(String user);
	
	/**
	 * 根据机构查询
	 * @param org 机构
	 * @return 查询实例
	 */
	public TaskQuery queryByOrg(String org);
	
	/**
	 * 根据用户,角色,机构查询
	 * @param user
	 * @param roler
	 * @param org
	 * @return 查询实例
	 */
	public TaskQuery queryByCandidate(String user, String roler, String org);
	
	/**
	 * 根据ID号排序
	 * @return
	 */
	public TaskQuery orderById();
	
	/**
	 * 根据任务名称排序
	 * @return
	 */
	public TaskQuery orderByName();
	
	/**
	 * 根据创建时间排序
	 * @return
	 */
	public TaskQuery orderByCreatetime();
	
	/**
	 * 根据领取的任务时间排序
	 * @return
	 */
	public TaskQuery orderBySigntime();
	
}
